public class MyCircularQueue {
    private  int [] elem;//用循环数组实现队列
    private  int front;//队头下标
    private  int rear;//队尾下标

    public MyCircularQueue(int k) {
        this.elem =new int[k+1];
        //开普数组空间
    }
    public  boolean isFull(){
        if((rear+1)%elem.length==front){
            return true;
        }
        return  false;
    }
    public  boolean isEmpty(){
        return front==rear;
    }
    public  boolean enQueue(int value){//入队
        if(isFull()){
            return false;
        }
        elem[rear]=value;
        rear=(rear+1)%elem.length;
        return true;
    }
    public  boolean deQueue(){//出队
        if(isEmpty()){
            return false;

        }
        front=(front+1)%elem.length;
        return true;

    }
    public  int Front(){//得到队头元素
        if(isEmpty()){
            return -1;
        }
        return elem[front];

    }
    public  int Rear(){//得到队尾元素
        if(isEmpty()){
            return -1;
        }
        int index=(rear==0)?elem.length-1:rear-1;//这里是防止rear走到0位置（也就是头和尾再次相遇了），使得rear-1不合法
        return  elem[index];

    }

}
